package service

import (
	"blog_go/internal/model"
	"blog_go/internal/repository"
	"errors"
)

type TagService interface {
	QueryTag(categoryId int) ([]*model.Tag, error)
	QueryAllTag() ([]*model.TagView, error)
	AddTag(tag model.TagView) error
	UpdateTag(tag model.TagView) error
	DelTag(tagId int) error
}

type tagService struct {
	*Service
	tagRepo repository.TagRepository
}

func NewTagService(service *Service, tagRepo repository.TagRepository) TagService {
	return &tagService{
		Service: service,
		tagRepo: tagRepo,
	}
}

// 查询标签
func (s *tagService) QueryTag(categoryId int) ([]*model.Tag, error) {
	return s.tagRepo.QueryTag(categoryId)
}

// 查询标签及所属分类
func (s *tagService) QueryAllTag() ([]*model.TagView, error) {
	return s.tagRepo.QueryAllTag()
}

// 添加标签
func (s *tagService) AddTag(tag model.TagView) error {
	if tag.TagName == "" {
		return errors.New("标签名不能为空")
	}

	return s.tagRepo.AddTag(tag)
}

// 更新标签
func (s *tagService) UpdateTag(tag model.TagView) error {
	if tag.TagId == 0 {
		return errors.New("标签名不能为空")
	}

	return s.tagRepo.UpdateTag(tag)
}

// 删除标签
func (s *tagService) DelTag(tagId int) error {
	if tagId == 0 {
		return errors.New("参数错误")
	}

	return s.tagRepo.DelTag(tagId)
}
